#! /bin/sh
#
# init.d script for backup and restore midea file


WORK_PATH=/data/midea
BACKUP_PATH=/usrdata/midea

LE_OK=0
LE_ERR=1

echo "=== midea_file_check Start ===" > /dev/kmsg
midea_dir_check() {

    # 检查备份目录是否存在，不存在则创建
    if [ ! -d $BACKUP_PATH ]; then
      mkdir -p $BACKUP_PATH
    fi
    
    # 检查更新目录是否存在，不存在则创建
    if [ ! -d $WORK_PATH ]; then
        mkdir -p $WORK_PATH
    fi
        
	# 检查 分区是否损坏或是否为首次启动
	# 如果 BACKUP_PATH 目录为空，则进行备份操作
	if [ ! "$(ls -A $BACKUP_PATH/)" ]; then
		# 复制 WORK_PATH 目录下的所有文件到 BACKUP_PATH 目录
		cp -fp $WORK_PATH/* $BACKUP_PATH/
	fi

	# 检查在运行时创建的新配置文件是否存在于 BACKUP_PATH 中，如果不存在则同步
	# 使用 find 命令查找 WORK_PATH 目录下的所有文件（不包括子目录）
	COPY_FILES=$(find $WORK_PATH -maxdepth 1 -type f)
	
	# 遍历每个找到的文件
	for copy_file in $COPY_FILES; do
		# 获取当前工作文件的完整路径
		copy_work_file="$WORK_PATH/${copy_file##*/}"
		# 获取对应的备份文件的完整路径
		copy_backup_file="$BACKUP_PATH/${copy_file##*/}"

		# 如果备份目录中不存在当前工作文件的备份副本
		if [ ! -f "$copy_backup_file" ]; then
			# 复制当前工作文件到备份目录
			cp -fp "$copy_work_file" "$BACKUP_PATH"
		fi
	done
}


midea_restore_backup_check(){
	# 查找BACKUP_PATH目录下的所有文件，存储在CONFIG_FILES变量中
	CONFIG_FILES=$(find $BACKUP_PATH -maxdepth 1 -type f)
	
	# 遍历每一个找到的配置文件
	for config_file in $CONFIG_FILES; do
		# 定义工作目录下的文件路径
		work_file="$WORK_PATH/${config_file##*/}"
		# 定义备份目录下的文件路径
		backup_file="$BACKUP_PATH/${config_file##*/}"

		# 打印当前检查的工作文件路径
		echo "check work_file is $work_file" > /dev/kmsg
		# 打印当前检查的备份文件路径
		echo "check backup_file is $backup_file"  > /dev/kmsg

		# 1.备份: 如果备份文件不存在、为空或与工作文件不同
		if [ ! -s "$backup_file" ] && [ -s "$work_file" ]; then 
			# 如果备份文件不存在或为空，而工作文件存在且不为空，则将工作文件复制到备份目录
			echo "Backup: $backup_file is not exist or empty, work to backup" > /dev/kmsg
			cp -fp "$work_file" "$BACKUP_PATH"
		else
			# 比较工作文件和备份文件是否相同
			cmp -s "$work_file" "$backup_file"
			if [ $? -ne $LE_OK ] && [ -s "$work_file" ]; then
				# 如果文件不同且工作文件存在且不为空，则将工作文件复制到备份目录
				echo "Backup: $backup_file is different, work to backup" > /dev/kmsg
				cp -fp "$work_file" "$BACKUP_PATH"
			fi
		fi

		# 2.恢复: 如果工作文件不存在或为空，而备份文件存在且不为空
		if [ ! -s "$work_file" ] && [ -s "$backup_file" ]; then
			# 将备份文件复制到工作目录
			echo "Restore: $work_file is not exsit or emptybackup to work" > /dev/kmsg
			cp -fp "$backup_file" "$WORK_PATH"
		fi
	done
}

midea_dir_check
midea_restore_backup_check

echo "=== midea_file_check end ===" > /dev/kmsg